const baseUrl = process.uniEnv.VUE_APP_API_ROOT
import {
	opensSignature
} from '@/mo-starter.config.js'
// 此vm参数为页面的实例，可以通过它引用vuex中的变量
module.exports = (vm) => {
	// 初始化请求配置
	uni.$u.http.setConfig((config) => {
		/* config 为默认全局配置*/
		config.baseURL = baseUrl; /* 根域名 */
		return config
	})

	// 请求拦截
	uni.$u.http.interceptors.request.use((config) => { // 可使用async await 做异步操作
		// 初始化请求拦截器时，会执行此方法，此时data为undefined，赋予默认{}
		// if (getToken()) {
		// 	config.header.Authorization = `Bearer ${getToken()}`;
		// }
		// 是否开启接口参数校验
		if (opensSignature) {
			// const webTm = new Date().getTime()
			// let param = config.method.toUpperCase === 'GET' ? config.params : config.data
			// const Sign = getSign(config.fullPath, param, webTm, config.method)
			config.header = {
				...config.header
			}
		}
		return config
	}, config => { // 可使用async await 做异步操作
		return Promise.reject(config)
	})

	// 响应拦截
	uni.$u.http.interceptors.response.use((res) => {
		/* 对响应成功做点什么 可使用async await 做异步操作*/
		if (res.statusCode == 200) {
			// res为服务端返回值，可能有code，result等字段
			// 这里对res.result进行返回，将会在this.$u.post(url).then(res => {})的then回调中的res的到
			// 如果配置了originalData为true，请留意这里的返回值
			return res.data;
		} else if (res.statusCode == 401) {
			// 假设401为token失效，这里跳转登录
			uni.$u.toast('验证失败，请重新登录');
			setTimeout(() => {
				// 此为uView的方法，详见路由相关文档
				uni.$u.route('/pages/login/login')
			}, 1500)
			return false;
		} else {
			uni.$u.toast(res.data.resp_msg);
			// 如果返回false，则会调用Promise的reject回调，
			// 并将进入this.$u.post(url).then().catch(res=>{})的catch回调中，res为服务端的返回值
			return false;
		}
	}, (response) => {
		// 对响应错误做点什么 （statusCode !== 200）
		return Promise.reject(response)
	})
}